/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.senac.academicnet.model;

import br.com.senac.academicnet.model.entidades.AlunoVO;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.util.List;

public class AlunoBO {

    public static void incluir(AlunoVO aluno) throws Exception {
        AlunoDAO.incluir(aluno);
        aluno.setCodigo(getAlunoPorMatricula(aluno.getMatricula()).getCodigo());
        AlunoProfessorDAO.incluir(aluno);
    }

    public static void alterar(AlunoVO aluno) throws Exception {
        AlunoDAO.alterar(aluno);
        AlunoProfessorDAO.incluir(aluno);
    }

    public static void deletar(AlunoVO aluno) throws Exception {
        AlunoProfessorDAO.deletar(aluno);
        AlunoDAO.deletar(aluno);
    }
    
    public static void deletarTudo() throws Exception {
        AlunoDAO.deletarTudo();
    }

    
    public static List<AlunoVO> getAlunos() throws Exception {
        return AlunoDAO.getAlunos();
    }
    
    public static AlunoVO getAluno(int codigo) throws Exception {
        return AlunoDAO.getAluno(codigo);
    }
    
    public static AlunoVO getAlunoPorMatricula(int matricula) throws Exception {
        return AlunoDAO.getAlunoPorMatricula(matricula);
    }

    public static int getProximaMatricula() throws Exception{
        return AlunoDAO.getProximaMatricula();
    }
    
    public static void exportarCSV(String arquivo) throws Exception {
        FileWriter writer = new FileWriter(arquivo);
        BufferedWriter bw = new BufferedWriter(writer);
        try {
            List<AlunoVO> alunos = getAlunos();

            bw.append("Codigo;Nome;Cpf;DataNascimento;Telefone;Celular;Logradouro;Numero;Bairro;Cidade;Uf;Matricula;Mensalidade;\n");
            for (AlunoVO aluno : alunos) {
                bw.append(aluno.toString() + "\n");
            }

        } catch (Exception e) {
            throw e;
        } finally {
            bw.close();
        }
    }
}